// 入口函数
main() {
  // 空安全机制
  // 1. 定义变量时，添加?表示该变量可以为空
  String? name = '张三';

  // 2. 调用变量时，添加?表示该变量可以为空
  print(name?.length);

  // 3. 调用变量时，添加!表示该变量不能为空
  print(name!.length);

  // 4. 调用变量时，添加??表示该变量可以为空，为空时返回默认值
  print(name ?? '默认值');

  // 5. 调用变量时，添加??=表示该变量可以为空，为空时赋值
  name ??= '默认值';
  print(name);
  // 6. 调用变量时，添加!表示该变量不能为空，为空时会报错
  // print(name!.length);

   // 如果在编译期间发现变量有可能为空 直接编译不过
  String? username; // username有可能为null也有可能为空字符串
  // 可以理解为 flutter String 和 null的联合类型
  // flutter 没有联合类型
  // 前端鸿蒙 avplayer: media.Avplayer | null = null
  // ? 运行时检查和 ！非空断言

}
